<?php


namespace app\command;
use think\console\Command;
use think\console\Input;
use think\console\Output;
use think\facade\Log;


/***
 * 定时删除登录二维码
 */
class DelQrcode extends Command
{

    protected function configure()
    {
        // 指令配置
        $this->setName('DelQrcode');
        // 设置参数
        $this->setDescription('定时删除登录二维码')->setHelp("php think DelQrcode");
    }

    protected function execute(Input $input, Output $output)
    {
        $directoryPath = public_path('uploads/qrcode'); // 指定要清理的目录
        // 调用助手类的方法
        $this->cleanImages($directoryPath);
    }

    protected  function cleanImages($directoryPath)
    {
        // 获取当前时间
        $currentTime = time();
        // 5分钟的时间戳
        $fiveMinutesInSeconds = 3 * 60;
        // 检查目录是否存在
        if (!is_dir($directoryPath)) {
            Log::channel('command')->error("目录不存在: " . $directoryPath);
            return;
        }

        // 获取目录下所有文件
        $files = scandir($directoryPath);
        foreach ($files as $file) {
            if ($file === '.' || $file === '..') {
                continue; // 跳过当前和上级目录
            }
            $filePath = $directoryPath  . $file;
            // 只处理图片文件
            if (preg_match('/\.(jpg|jpeg|png|gif)$/i', $file)) {
                $fileModifiedTime = filemtime($filePath); // 获取文件修改时间
                // 判断文件是否在5分钟内修改
                if (($currentTime - $fileModifiedTime) > $fiveMinutesInSeconds) {
                    if (unlink($filePath)) {
                        Log::channel('command')->info("已删除文件: " . $filePath);
                    } else {
                        Log::channel('command')->error("无法删除文件: " . $filePath);
                    }
                }
            }
        }
    }

}